val pi : float
val is_clockwise : 'a * float * 'b -> bool
val drawObj :
  bool ref ->
  (Gl.point3 * Gl.point3 * Gl.point3) array ->
  (Gl.vect3 * Gl.vect3 * Gl.vect3) array ->
  (Gl.rgb * Gl.rgb * Gl.rgb) array -> (float * float -> bool) -> unit
val display :
  bool ref ->
  bool ref ->
  Camera.camera ->
  int ref ->
  int ref ->
  (Gl.point3 * Gl.point3 * Gl.point3) array ref ->
  (Gl.vect3 * Gl.vect3 * Gl.vect3) array ref ->
  (Gl.rgb * Gl.rgb * Gl.rgb) array ref ->
  (float * float -> bool) -> unit -> unit
val reshape : int ref -> int ref -> Camera.camera -> int -> int -> unit
val keyboard : bool ref -> bool ref -> Camera.camera -> int -> unit
val mouse : Camera.camera -> x:float -> y:float -> unit
val mousePassive : Camera.camera -> x:float -> y:float -> unit
val getNarray :
  ((float * float * float) * (float * float * float) *
   (float * float * float))
  array -> (float * float * float) array
val getSoftNormals :
  (float * float * float) array ->
  int ->
  int list array ->
  ((float * float * float) * (float * float * float) *
   (float * float * float))
  array
val getCarray :
  (('a * 'b * 'c) * ('a * 'd * 'c) * ('a * 'e * 'c)) array ->
  ('a * 'c -> float * float * float) ->
  ((float * float * float) * (float * float * float) *
   (float * float * float))
  array
val init : unit -> unit
val get_pos : Camera.camera -> unit -> float * float * float
val set_pos : Camera.camera -> float * float * float -> unit
val get_dir : Camera.camera -> unit -> float * float * float
val set_dir : Camera.camera -> float * float * float -> unit
val set_dir_and_pos :
  Camera.camera ->
  bool -> float * float * float -> float * float * float -> unit
val set_select_mode : 'a ref -> 'a -> unit
val set_wire : bool ref -> bool -> unit
val reload :
  ((float * float * float) * (float * float * float) *
   (float * float * float))
  array ref ->
  ((float * float * float) * (float * float * float) *
   (float * float * float))
  array ref ->
  ((float * float * float) * (float * float * float) *
   (float * float * float))
  array ref -> (float * float -> float * float * float) -> string -> unit
val execute :
  int ->
  int ->
  string ->
  (float * float -> bool) ->
  (float * float -> Gl.rgb) ->
  (unit -> unit) * (int -> int -> unit) * (unit -> unit) * (int -> unit) *
  (x:float -> y:float -> unit) * (x:float -> y:float -> unit) *
  (float * float * float -> unit) * (unit -> float * float * float) *
  (float * float * float -> unit) * (unit -> float * float * float) *
  (bool -> unit) * (string -> unit) *
  (bool -> float * float * float -> float * float * float -> unit) *
  (bool -> unit) * (unit -> bool) * (float -> unit)
